/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.catraca.controlador;

import br.catraca.Dao.Dao;
import br.catraca.modelo.Aluno;
import br.catraca.modelo.Departamento;
import br.catraca.modelo.Funcionario;
import br.catraca.repositorio.Repositorio;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Henrique
 */
public class ControladorAluno {
    
    private Repositorio repositorio = new Repositorio();
    private Dao  DaoRepositorio = new Dao();
    
    
    public void removerDoDept(HttpServletRequest request, String matricula){
        
        
        List <Aluno> alunos = repositorio.listarTodosAlunos();
        Long mat = Long.parseLong(matricula);
        Aluno aluno = new Aluno();
        String id_departamento = new String();
                    
        for (int index = 0; index < alunos.size(); index ++){
            if (alunos.get(index).getMatricula().equals(mat)){
               
                 aluno.setMatricula(alunos.get(index).getMatricula());        
                 aluno.setNome(alunos.get(index).getNome());
                 aluno.setCpf(alunos.get(index).getCpf());
                 aluno.setCurso(alunos.get(index).getCurso());
                 aluno.setEmail(alunos.get(index).getEmail());
                 aluno.setSexo(alunos.get(index).getSexo());
                 aluno.setSituacao(alunos.get(index).getSituacao());
                 aluno.setDepartamento(null);
                 
                repositorio.removeAlunoDepartamento(aluno);
                
                id_departamento = Integer.toString(alunos.get(index).getDepartamento().getId());
                
                                                       
                break;
            }
        }
        
        alunos = repositorio.listarAlunoNoDepartamento(id_departamento);
        HttpSession secao = request.getSession();
        secao.setAttribute("alunos", alunos);
        
    }
    
    public void listarAlunosNoCurso(HttpServletRequest request, String curso){
        
        List <Aluno> alunos = repositorio.listarAlunoNoCurso(curso);
        
        HttpSession secao = request.getSession();
        secao.setAttribute("aluno_nulo", alunos);
        /*
         * guarda o nome do curso na sessão para usa-lo
         * no método abaixo.
         */
        secao.setAttribute("nomeCurso", curso);
        
                
    }
    
    public void associarAluno (HttpServletRequest request, String nome_curso, String[] pessoasAssociar){
        
     HttpSession secao = request.getSession();
        
     String nomeDept = (String) secao.getAttribute("nomeDept");   
     
     Departamento departamento = new Departamento();
     // Consulta o banco para saber se já existe departamento cadastrado com esse nome
     List <Departamento> Dept = repositorio.listarDepartamento(nomeDept);
     
        /*Se não tiver nenhum departamento com o nome armazenado na variável nomeDept
          * então é setado um novo departamento com um novo nome.
          * O id do departamento é gerado automaticamente.
          */
        if (Dept.isEmpty()){
            
           departamento.setNome(nomeDept);
           repositorio.criarDepartamento(departamento);
        }
        
        departamento = repositorio.listarDepartamentoPorNome(nomeDept);
        
        List <Aluno> alunos = new ArrayList<Aluno>();
        
        for (int index = 0; index < pessoasAssociar.length; index++){
            
            alunos.add(repositorio.listarAlunoPorMatricula(pessoasAssociar[index]));            
            
        }
        
        for (int index = 0; index < alunos.size(); index++)          {
            alunos.get(index).setDepartamento(departamento);             
            repositorio.associarAluno(alunos.get(index));
         }
        
        List<Departamento> departamentos = repositorio.listarDepartamentos();
        List<Aluno> AlunosNulo = repositorio.listarAlunoNoCurso(nome_curso);
        
        
        if (AlunosNulo.isEmpty()){
        Aluno aluno = new Aluno(); 
        aluno.setNome("nulo"); 
        AlunosNulo.add(aluno); 
                   
        }
        
        /*Guarda AlunosNulo na seção departamentos para poder atualizar a 
         * tabela departamentos da página Home.
         
         */
         secao.setAttribute("departamentos", departamentos );
         secao.setAttribute("aluno_nulo", AlunosNulo);
                
        
        
        
    }
    
    public List listarTodosAlunos(String nomeCurso){
        
        return DaoRepositorio.listarObjeto("from aluno where curso = '"+nomeCurso+"'");
        
    }
    
    public List buscarAluno(String buscaAluno) {
        
        return DaoRepositorio.listarObjeto("FROM aluno WHERE nome ='"+buscaAluno+"' OR matricula ='"+buscaAluno+"'");
        
    }
    
    
}
